<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box {
            width: 1060px;
            height: 622px;
            margin: 0px auto;
            border: 2px solid black;
            position: relative;
            display: flex;
            justify-content: space-between;
            overflow: hidden;
        }
        .da {
            width: 853px;
            height: 622px;
        }

        ul{
            position: relative;
            top: 0;
            transition: all .2s linear;
        }

        ul>li {
            width: 100%;
            padding: 15px;
        }
        ul>li img{
            display: block;
        }

        .xiao {
            height: 622px;
            position: relative;
        }

        ol {
            position: relative;
            top: 0;
            transition: all .2s linear;
        }

        ol > li{
            padding: 8.5px 4px;
        }

        ol>li img {
            display: block;
            width: 193px;
        }

        /* .kuang {
            width: 193px;
            height: 110px;
        } */
        .xiao > span{
            position: absolute;
            right: 40%;
            padding: 10px;
            font-size: 12px;
            color: #fff;
            background-color: rgba(0, 0, 0, 0.361);
            border-radius: 20px;
            z-index: 10;
        }
        .prev{
            top: 0;
        }
        .next{
            bottom: 0;
        }
        .border{
            width: 193px;
            height: 139px;
            border: 4px solid #000;
            position: absolute;
            top: 4px;
            right: 0;
            transition: all .2s linear;
        }
        .border > span{
            position: absolute;
            width: 0;
            height: 0;
            border: 10px solid #000;
            border-color: transparent;
            border-right-color: #000;
            left: -20px;
            top: 65px;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="da">
            <ul>
            </ul>
        </div>
        <div class="xiao">
            <span class="prev">上</span>
            <ol>
            </ol>
            <span class="next">下</span>
            <div class="border">
                <span></span>
            </div>
        </div>
    </div>
    <script>
        var ul = document.querySelector("ul");
        var ol = document.querySelector("ol");
        // 1.图片路径的前缀
        var str = "https://www.jq22.com/demo/jqueryhdlbt202103282156/img/t";
        // 3.声明一个空字符串用来叠加 多个li标签
        var str1 = "";
        // 2.循环创建多个li标签   
        for (let i = 1; i <= 7; i++) {
            // 3.拼接字符串
            var url = str + i + ".png"
            // 5.叠加li
            str1 += `<li>
                   <img src = "${url}"  alt= "tu">
                   </li>`
        }
        ul.innerHTML = str1;
        ol.innerHTML = str1;
        
        // 
        // 1.点击右边的ol的li,设置.border移动到点击这个li上; 再设置左边ul的相对应的li显示
        // 2.点击上下按钮,设置右边ol里li显示下一个

        // 1.获取所有需要的标签
        var olLis = document.querySelectorAll("ol > li");
        var li = document.querySelector("ul > li");
        var prev = document.querySelector(".prev");
        var next = document.querySelector(".next");
        var border = document.querySelector(".border");

        // 16.设置一个全局变量接收点击ol>li时.被点击的li的索引值
        var liIndex = 0;

        // 2.循环获取每个ol里的li
        for(var i = 0;i < olLis.length;i++){
            // 6.给每个ol>li设置一个自定义属性 值是当前标签的索引值
            olLis[i].index = i;
            // 3.给每个ol>li添加点击事件
            olLis[i].onmouseenter = function(){
                // 4  160  316  472  (156)  0-3
                // 7.获取当前点击标签的索引值.this.index

                // 18.因为this.index-下一张使用的index 等于border需要的index
                // 将这个this.index赋值给一个全局变量
                liIndex = this.index;
                
                // 根据this.index index得到 一个0-3的值  0 0  
                var bindex = 0;
                // 5.先初始的设置border标签的移动  7.1使用当前点击标签的索引值计算border移动的值
                var borT = bindex * 156 + 4; //0 1 2  3
                border.style.top =  borT + "px";

                // 8.通过this.index计算ul需要移动的值 对ul进行移动
                var ult = this.index * li.offsetHeight;
                ul.style.top = -ult + "px";
                borderFun()
            }
        }

        // 19.对border的移动进行封装 因为点击ol>li要用 点击上一张下一张也要用
        function borderFun(){
            // 20.计算border需要显示在第几个索引值位置上
            var bi = liIndex - index;
            console.log(bi);
            // 21.移动border
            var borT = bi * 156 + 4; //0 1 2 3
            border.style.top =  borT + "px";
        }

        // 10.设置右边小图片(的第一张)默认显示的索引值
        var index = 0;
        // 9.给下一张添加点击事件
        next.onclick = function(){
            // 11.记录显示下一个ol的li
            index++;
            // 12.进行判断,到最后的话,就在最后呆着
            if(index > 3) index = 3;  //最大值为3
            // 13.根据记录的index计算ol需要移动的值
            var olt = index * olLis[0].offsetHeight;
            // 14.设置ol的移动
            ol.style.top = -olt + "px";
            borderFun()
            // border.style.top = border.style.top - olLis[0].offsetHeight + "px";
        }
        // 15.点击上一张
        prev.onclick = function(){
            index--;
            if(index < 0) index = 0; //最小值为0
            var olt = index * olLis[0].offsetHeight;
            ol.style.top = -olt + "px";
            borderFun()
        }
    </script>
</body>

</html>